package jinzhi;
//数字转换为十六进制数
public class basic405 {
    public String toHex(int num) {
//  if (num==0){
//      return "0";
//  }
//
//  if (num<0){
//
//  }
//
//
//        StringBuffer stringBuffer = new StringBuffer();
//
//        while (num!=0){
//            if (n)
//
//
////            stringBuffer.insert(0,num%16)
//
//
//
//        }
//
//
//
//
//        return stringBuffer.toString();
        StringBuilder s = new StringBuilder();
        if(num > 0){
            while(num != 0){
                int a = num%16;
                s.append((a>9)?(toStr(a)):a);
                num = num/16;
            }
            s.reverse();
            return s.toString();
        }
        //对于负数用补码的形式表示  TODO:再看
        else if(num < 0){
            long n = (long)Math.pow(2,32)+num;
            while(n != 0){
                long a = n%16;
                s.append((a>9)?(toStr((int)a)):a);
                n = n/16;
            }
            s.reverse();
            return s.toString();
        }
        return "0";
        }




    public String toStr(int a){
        if(a == 10) return "a";
        else if(a == 11) return "b";
        else if(a == 12) return "c";
        else if(a == 13) return "d";
        else if(a == 14) return "e";
        return "f";
    }

    public static void main(String[] args) {
        basic405 basic405 = new basic405();
        System.out.println(basic405.toHex(-18));
    }



    }


